1. Field of the Invention
The present invention relates to the field of digital communications. More particularly, the present invention relates to a method and apparatus for scheduling and mixing media such as audio in a multi-media environment.
2. Background Art Related to the Invention
Due to the growing demand for various multi-media applications such as video conferencing over the last few years, businesses now are realizing that successful personal computers ("PCs") must be able to support multi-media applications. Typically, to avoid interactive problems (e.g., "lip-sync") between different types of media defined as digital information producing audio, video or text, multi-media applications require observance of strict timing constraints in processing media. These timing constraints may be satisfied by configuring the PC to process media on a "real-time" basis.
Currently, a multi-tasking operating system called "Windows", developed by Microsoft Corporation of Redmond, Wash., is one of the most widely-used operating systems for PCs. As shown in FIG. 1, an audio subsystem 100 of Windows.TM. includes a well-known Wave Application Programming Interface ("Wave APE") 105 which provides a standard interface for an arbitrary number "n" of Windows-based application programs 115a-115n to communicate with an audio driver 120 residing in a protected "Ring 3" environment of Windows.TM.. The audio driver 120 transfers blocks of audio from the Windows-based application programs 115a-115a to an audio hardware device 125.
However, most PCs operating in a Windows.TM. environment are unable to fully support multi-media applications. This is due largely to the fact that Windows.TM. is a non-real-time operating system and therefore, is subject to a wide variety of interactive problems caused by excessive signal propagation latency and clock skew. The later problem still is quite common even for real-time systems.
In addition, more and more PC application programs are providing audio services. This poses another problem for PCs operating in the Windows.TM. environment because Windows.TM. does not allow multiple application programs to "share" the audio hardware device through such operations as "mixing" (i.e. combining) audio streams provided by different application programs to produce a "composite" audio stream. Rather, Windows.TM. utilizes audio drivers which are dedicated to operate in cooperation with only one application program at a time. For example, if a first application program 115a "opens" the audio driver 120 for use in mapping an audio stream from one format into another format used by the audio hardware device 125, the remaining application programs 115b-115n are precluded from using the audio driver 120 until it is "closed". Subsequently, the audio driver 120 may be "re-opened" by the same application program 115a or opened by a different application program 115b-115n. Thus, PCs with conventional audio drivers supplied by third party hardware vendors are typically precluded from providing a "composite" audio stream representing two or more sounds occurring simultaneously.
As a result, many hardware vendors have been introducing audio drivers with sophisticated software mechanisms in order to provide "composite" audio. However, such a solution presents a number of disadvantages. First, it places excessive burden on the hardware vendors to provide more and more complicated software audio drivers to maintain compatibility between Windows.TM. and their specific type of audio hardware device. Moreover, it causes common audio features (e.g., volume control) to be repeatedly coded into each hardware vendor's audio driver. This repetitive effort unnecessarily raises the overall costs of the audio hardware devices. Moreover, as the complexity and number of audio drivers increases, it becomes more difficult to fully coordinate the operations of numerous application programs with multiple audio hardware devices in order to avoid synchronization and clock skew problems. Although these above-mentioned disadvantages are discussed in connection with audio, they are applicable to any type of media supported by PCs such as video or text.
In light of the foregoing, it is appreciated that there exists a need to design and develop a communication scheme which would enable a PC operating in a non-real-time environment (e.g., Windows.TM.) to support at least one multi-media application program without experiencing interactive problems caused by synchronization or clock skew or modifying Windows.TM. and/or prior Windows-based application programs.